package com.waikuai.shop.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.waikuai.shop.entity.ProductReview;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 商品评价Mapper接口
 * @author waikuai
 */
@Mapper
public interface ProductReviewMapper extends BaseMapper<ProductReview> {

    /**
     * 分页查询商品评价列表
     * @param page 分页对象
     * @param productId 商品ID
     * @param status 审核状态
     * @return 评价列表
     */
    IPage<ProductReview> selectReviewPageByProductId(Page<ProductReview> page,
                                                      @Param("productId") Long productId,
                                                      @Param("status") Integer status);

    /**
     * 获取商品评价列表（包含用户信息）
     * @param productId 商品ID
     * @param status 审核状态
     * @param limit 限制数量
     * @return 评价列表
     */
    List<ProductReview> selectReviewsByProductId(@Param("productId") Long productId,
                                                  @Param("status") Integer status,
                                                  @Param("limit") Integer limit);

    /**
     * 统计商品评价数量
     * @param productId 商品ID
     * @param status 审核状态
     * @return 评价数量
     */
    Integer countReviewsByProductId(@Param("productId") Long productId,
                                    @Param("status") Integer status);

    /**
     * 计算商品平均评分
     * @param productId 商品ID
     * @param status 审核状态
     * @return 平均评分
     */
    Double calculateAverageRating(@Param("productId") Long productId,
                                  @Param("status") Integer status);
}

